package modelLayer;
import java.util.ArrayList;


/**
 * VareContaineren indeholder forskellige Vare.
 * 
 * @author (Gruppe 2. Jonas, Danny, Kasper, Bruno & Jesper) 
 * @version (17/12-2012)
 */
public class VareContainer
{
    // Attributer
    private static VareContainer instance;
    private ArrayList<Vare> varer;

    /**
     * Constructor for objects of class VareContainer
     */
    private VareContainer()
    {
        varer = new ArrayList<Vare>();
    }
    
    /**
     * Singleton af Varecontainer
     */
    public static VareContainer getInstance()
    {
        if (instance == null)
        {
            instance = new VareContainer();
        }
        return instance;
    }
    
    /**
     * Tilføjer en vare
     * 
     * @param   vare    Varens objekt.
     * @return          Returnerer true hvis varen blev tilføjet, false hvis ikke.
     */
    public boolean tilfoejVare(Vare vare)
    {
        // Tilføj kun varen, hvis den ikke eksisterer i forvejen.
        if (findVare(vare.getType()) == null) {
            varer.add(vare);
            return true;
        }  else {
            return false;
        }
    }
    
    /**
     * Sletter en vare.
     * 
     * @param   vare    Varens objekt.
     */
    public void sletVare(Vare vare)
    {
        varer.remove(vare);
    }
    /**
     * Sletter en vare ud fra typen.
     * 
     * @param   type    Varens type.
     */
    public void sletVare(String type)
    {
        Vare v = findVare(type);
        sletVare(v);
    }
    
    /**
     * finder en vare via type
     */
    public Vare findVare(String type)
    {
        int i = 0;
        boolean found = false;
        Vare retur = null;
        
        while(i < varer.size() && !found)
        {
            if(varer.get(i).getType().equals(type))
            {
                found = true;
                retur = varer.get(i);
            }
            else
            {
                i++;
            }
        }
        return retur;
    }
}
